return font;
}
+#define MIN_ASCII_GLYPH 32
+#define MAX_ASCII_GLYPH 127 /* exclusive */
+#define N_ASCII_GLYPHS (MAX_ASCII_GLYPH - MIN_ASCII_GLYPH)
+
+static PangoGlyphString *
+create_ascii_glyphs (PangoFont *font)
+{
+ PangoLanguage *language = pango_language_from_string ("en_US"); /* just pick one */
+ PangoCoverage *coverage;
+ PangoAnalysis not_a_hack = {
+ .shape_engine = pango_font_find_shaper (font, language, MIN_ASCII_GLYPH), /* never changes */
+ .lang_engine = NULL, /* unused by pango_shape() */
+ .font = font,
+ .level = 0,
+ .gravity = PANGO_GRAVITY_SOUTH,
+ .flags = 0,
+ .script = PANGO_SCRIPT_COMMON,
+ .language = language,
+ .extra_attrs = NULL
+ };
+ PangoGlyphString *result, *glyph_string;
+ guint i;
+
+ coverage = pango_font_get_coverage (font, language);
+ for (i = MIN_ASCII_GLYPH; i < MAX_ASCII_GLYPH; i++)
+ {
+ if (!pango_coverage_get (coverage, i))
+ break;
+ }
+ pango_coverage_unref (coverage);
+ if (i < MAX_ASCII_GLYPH)
+ return NULL;
+
+ result = pango_glyph_string_new ();
+ pango_glyph_string_set_size (result, N_ASCII_GLYPHS);
+ glyph_string = pango_glyph_string_new ();
+ for (i = MIN_ASCII_GLYPH; i < MAX_ASCII_GLYPH; i++)
+ {
+ pango_shape ((char[2]) { i, 0 },
+ 1,
+ ¬_a_hack,
+ glyph_string);
+ if (glyph_string->num_glyphs != 1)
+ {
+ pango_glyph_string_free (glyph_string);
+ pango_glyph_string_free (result);
+ return NULL;
+ }
+ result->glyphs[i - MIN_ASCII_GLYPH] = glyph_string->glyphs[0];
+ }
+
+ pango_glyph_string_free (glyph_string);
+
+ return result;
+}
+
static gboolean
parse_font (GtkCssParser *parser,
gpointer out_font)
double d, d2;
int i;
- if (!gtk_css_parser_consume_integer (parser, &i) ||
- !gtk_css_parser_consume_number (parser, &d))
+ if (gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_STRING))
{
- pango_glyph_string_free (glyph_string);
- return FALSE;
- }
- gi.glyph = i;
- gi.geometry.width = (int) (d * PANGO_SCALE);
+ char *s = gtk_css_parser_consume_string (parser);
- if (gtk_css_parser_has_number (parser))
+ for (i = 0; s[i] != 0; i++)
+ {
+ if (s[i] < MIN_ASCII_GLYPH || s[i] >= MAX_ASCII_GLYPH)
+ {
+ gtk_css_parser_error_value (parser, "Unsupported character %d in string", i);
+ }
+ gi.glyph = PANGO_GLYPH_INVALID_INPUT - MAX_ASCII_GLYPH + s[i];
+ pango_glyph_string_set_size (glyph_string, glyph_string->num_glyphs + 1);
+ glyph_string->glyphs[glyph_string->num_glyphs - 1] = gi;
+ }
+ }
+ else
{
- if (!gtk_css_parser_consume_number (parser, &d) ||
- !gtk_css_parser_consume_number (parser, &d2))
+ if (!gtk_css_parser_consume_integer (parser, &i) ||
+ !gtk_css_parser_consume_number (parser, &d))
{
pango_glyph_string_free (glyph_string);
return FALSE;
}
- gi.geometry.x_offset = (int) (d * PANGO_SCALE);
- gi.geometry.y_offset = (int) (d2 * PANGO_SCALE);
+ gi.glyph = i;
+ gi.geometry.width = (int) (d * PANGO_SCALE);
- if (gtk_css_parser_try_ident (parser, "same-cluster"))
- gi.attr.is_cluster_start = 0;
- else
- gi.attr.is_cluster_start = 1;
- }
+ if (gtk_css_parser_has_number (parser))
+ {
+ if (!gtk_css_parser_consume_number (parser, &d) ||
+ !gtk_css_parser_consume_number (parser, &d2))
+ {
+ pango_glyph_string_free (glyph_string);
+ return FALSE;
+ }
+ gi.geometry.x_offset = (int) (d * PANGO_SCALE);
+ gi.geometry.y_offset = (int) (d2 * PANGO_SCALE);
- pango_glyph_string_set_size (glyph_string, glyph_string->num_glyphs + 1);
- glyph_string->glyphs[glyph_string->num_glyphs - 1] = gi;
+ if (gtk_css_parser_try_ident (parser, "same-cluster"))
+ gi.attr.is_cluster_start = 0;
+ else
+ gi.attr.is_cluster_start = 1;
+ }
+
+ pango_glyph_string_set_size (glyph_string, glyph_string->num_glyphs + 1);
+ glyph_string->glyphs[glyph_string->num_glyphs - 1] = gi;
+ }
}
while (gtk_css_parser_try_token (parser, GTK_CSS_TOKEN_COMMA));
return result;
}
+static gboolean
+unpack_glyphs (PangoFont *font,
+ PangoGlyphString *glyphs)
+{
+ PangoGlyphString *ascii = NULL;
+ guint i;
+
+ for (i = 0; i < glyphs->num_glyphs; i++)
+ {
+ PangoGlyph glyph = glyphs->glyphs[i].glyph;
+
+ if (glyph < PANGO_GLYPH_INVALID_INPUT - MAX_ASCII_GLYPH ||
+ glyph >= PANGO_GLYPH_INVALID_INPUT)
+ continue;
+
+ glyph = glyph - (PANGO_GLYPH_INVALID_INPUT - MAX_ASCII_GLYPH) - MIN_ASCII_GLYPH;
+
+ if (ascii == NULL)
+ {
+ ascii = create_ascii_glyphs (font);
+ if (ascii == NULL)
+ return FALSE;
+ }
+
+ glyphs->glyphs[i].glyph = ascii->glyphs[glyph].glyph;
+ glyphs->glyphs[i].geometry.width = ascii->glyphs[glyph].geometry.width;
+ }
+
+ g_clear_pointer (&ascii, pango_glyph_string_free);
+
+ return TRUE;
+}
+
static GskRenderNode *
parse_text_node (GtkCssParser *parser)
{
}
if (!glyphs)
- return NULL;
+ {
+ const char *text = "Hello";
+ PangoGlyphInfo gi = { 0, { 0, 0, 0}, { 1 } };
+ guint i;
- result = gsk_text_node_new (font, glyphs, &color, &offset);
+ glyphs = pango_glyph_string_new ();
+ pango_glyph_string_set_size (glyphs, strlen (text));
+ for (i = 0; i < strlen (text); i++)
+ {
+ gi.glyph = PANGO_GLYPH_INVALID_INPUT - MAX_ASCII_GLYPH + text[i];
+ glyphs->glyphs[i] = gi;
+ }
+ }
+
+ if (!unpack_glyphs (font, glyphs))
+ {
+ gtk_css_parser_error_value (parser, "Given font cannot decode the glyph text");
+ result = NULL;
+ }
+ else
+ {
+ result = gsk_text_node_new (font, glyphs, &color, &offset);
+ if (result == NULL)
+ {
+ gtk_css_parser_error_value (parser, "Glyphs result in empty text");
+ }
+ }
g_object_unref (font);
pango_glyph_string_free (glyphs);
+ /* return anything, whatever, just not NULL */
+ if (result == NULL)
+ result = create_default_render_node ();
+
return result;
}
const PangoGlyphInfo *glyphs = gsk_text_node_peek_glyphs (node);
const graphene_point_t *offset = gsk_text_node_get_offset (node);
const GdkRGBA *color = gsk_text_node_peek_color (node);
+ PangoFont *font = gsk_text_node_peek_font (node);
PangoFontDescription *desc;
char *font_name;
- guint i;
+ GString *str;
+ guint i, j;
+ PangoGlyphString *ascii = create_ascii_glyphs (font);
+
start_node (p, "text");
if (!gdk_rgba_equal (color, &GDK_RGBA("000000")))
append_rgba_param (p, "color", color);
_indent (p);
- desc = pango_font_describe ((PangoFont *)gsk_text_node_peek_font (node));;
+ desc = pango_font_describe (font);
font_name = pango_font_description_to_string (desc);
+ if (ascii == NULL)
+ g_print ("\"%s\" has no ascii table\n", font_name);
g_string_append_printf (p->str, "font: \"%s\";\n", font_name);
g_free (font_name);
pango_font_description_free (desc);
_indent (p);
+ str = g_string_new (NULL);
g_string_append (p->str, "glyphs: ");
for (i = 0; i < n_glyphs; i++)
{
- if (i > 0)
- g_string_append (p->str, ", ");
+ if (ascii)
+ {
+ for (j = 0; j < ascii->num_glyphs; j++)
+ {
+ if (glyphs[i].glyph == ascii->glyphs[j].glyph &&
+ glyphs[i].geometry.width == ascii->glyphs[j].geometry.width &&
+ glyphs[i].geometry.x_offset == 0 &&
+ glyphs[i].geometry.x_offset == 0 &&
+ glyphs[i].attr.is_cluster_start)
+ {
+ g_string_append_c (str, j + MIN_ASCII_GLYPH);
+ break;
+ }
+ }
+ if (j != ascii->num_glyphs)
+ continue;
+ }
+
+ if (str->len)
+ {
+ g_string_append_printf (p->str, "\"%s\", ", str->str);
+ g_string_set_size (str, 0);
+ }
+
g_string_append_printf (p->str, "%u %g",
glyphs[i].glyph,
(double) glyphs[i].geometry.width / PANGO_SCALE);
if (!glyphs[i].attr.is_cluster_start)
g_string_append (p->str, " same-cluster");
}
+
+ if (i + 1 < n_glyphs)
+ g_string_append (p->str, ", ");
}
+
+ if (str->len)
+ g_string_append_printf (p->str, "\"%s\"", str->str);
+
g_string_append_c (p->str, ';');
g_string_append_c (p->str, '\n');
append_point_param (p, "offset", offset);
end_node (p);
+
+ g_string_free (str, TRUE);
+ if (ascii)
+ pango_glyph_string_free (ascii);
}
break;
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
- glyphs: 162 9, 244 8, 312 8, 287 8, 862 3, 678 7;
+ glyphs: "Page 1";
offset: 0 17;
}
transform: translate(28, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
- glyphs: 162 9, 244 8, 312 8, 287 8, 862 3, 679 8;
+ glyphs: "Page 2";
offset: 0 17;
}
transform: translate(28, 0);
child: text {
color: rgb(46,52,54);
font: "Cantarell 11";
- glyphs: 162 9, 244 8, 312 8, 287 8, 862 3, 680 8;
+ glyphs: "Page 3";
offset: 0 17;
}
transform: translate(28, 0);
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 273 7, 370 8, 358 13, 272 8, 370 8, 272 8, 370 8, 472 7, 287 8, 360 8, 430 5, 409 6, 473 7;
+ glyphs: "comboboxentry";
offset: 0 21;
}
clip {
text {
color: rgb(252,252,252);
font: "Cantarell 11";
- glyphs: 273 7, 370 8, 358 13, 272 8, 370 8, 272 8, 370 8, 472 7, 287 8, 360 8, 430 5, 409 6, 473 7;
+ glyphs: "comboboxentry";
offset: 0 21;
}
}
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 273 7, 370 8, 358 13, 272 8, 370 8, 272 8, 370 8, 472 7, 287 8, 360 8, 430 5, 409 6, 473 7;
+ glyphs: "comboboxentry";
offset: 0 21;
}
clip: 0 0 357 32;
child: text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 30 10, 349 4, 324 4, 273 7, 345 7, 862 3, 324 4, 273 7, 370 8, 360 8, 862 3, 430 5, 370 8, 862 3, 273 7, 319 8, 244 8, 360 8, 312 8, 287 8, 862 3, 358 13, 370 8, 280 8, 287 8;
+ glyphs: "Click icon to change mode";
offset: 0 21;
}
opacity: 0.54902;
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 287 8, 360 8, 430 5, 409 6, 473 7;
+ glyphs: "entry";
offset: 0 21;
}
clip: 0 0 392 32;
child: text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 287 8, 360 8, 430 5, 409 6, 473 7;
+ glyphs: "entry";
offset: 0 22;
}
clip: 0 0 357 33;
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 103 8, 287 8, 311 5, 430 5;
+ glyphs: "Left";
offset: 2 17;
}
transform {
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 113 13, 324 4, 280 8, 280 8, 349 4, 287 8;
+ glyphs: "Middle";
offset: 2 17;
}
transform {
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 165 9, 324 4, 312 8, 319 8, 430 5;
+ glyphs: "Right";
offset: 2 17;
}
transform {
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 349 4, 244 8, 272 8, 287 8, 349 4;
+ glyphs: "label";
offset: 0 22;
}
transform {
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 349 4, 244 8, 272 8, 287 8, 349 4;
+ glyphs: "label";
offset: 0 22;
}
transform: translate(52, 0);
child: text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 682 8, 677 9;
+ glyphs: "50";
offset: 0 15;
}
transform: translate(6, 6);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 677 9;
+ glyphs: "0";
offset: 0 15;
}
transform: translate(6, 6);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 287 8, 273 7, 345 7, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "checkbutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
child: text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 409 6, 244 8, 280 8, 324 4, 370 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "radiobutton";
offset: 0 15;
}
transform: translate(24, 0);
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 430 5, 370 8, 312 8, 312 8, 349 4, 287 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "togglebutton";
offset: 2 17;
}
}
text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 430 5, 370 8, 312 8, 312 8, 349 4, 287 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "togglebutton";
offset: 2 17;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 430 5, 370 8, 312 8, 312 8, 349 4, 287 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "togglebutton";
offset: 2 17;
}
}
text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 430 5, 370 8, 312 8, 312 8, 349 4, 287 8, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "togglebutton";
offset: 2 17;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 1 10, 360 8, 280 8, 409 6, 287 8, 244 8;
+ glyphs: "Andrea";
offset: 2 17;
}
transform {
text {
color: rgb(212,207,202);
font: "Cantarell 11";
- glyphs: 126 11, 430 5, 430 5, 370 8;
+ glyphs: "Otto";
offset: 2 17;
}
transform {
text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 173 9, 244 8, 360 8, 417 7, 862 3, 165 9, 287 8, 312 8, 438 8, 349 4, 244 8, 409 6;
+ glyphs: "Sans Regular";
offset: 0 17;
}
transform {
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 678 7, 679 8;
+ glyphs: "12";
offset: 0 17;
}
transform: translate(1, 0);
child: text {
color: rgb(146,149,149);
font: "Cantarell 11";
- glyphs: 822 4, 115 11, 370 8, 360 8, 287 8, 823 4;
+ glyphs: "(None)";
offset: 0 17;
}
transform: translate(16, 0);
text {
color: rgb(53,132,228);
font: "Cantarell 11";
- glyphs: 349 4, 324 4, 360 8, 345 7, 862 3, 272 8, 438 8, 430 5, 430 5, 370 8, 360 8;
+ glyphs: "link button";
offset: 10 17;
}
color {
child: text {
color: rgba(46,52,54,0.4);
font: "Cantarell 9.1669921875";
- glyphs: 682 7, 677 8, 859 1, 919 12;
+ glyphs: "50", 859 1, "%";
offset: 0 13;
}
transform: translate(237, 0);
text {
color: rgba(146,149,149,0.55);
font: "Cantarell 11";
- glyphs: 682 8, 677 9, 805 4, 677 9;
+ glyphs: "50.0";
offset: 26 15;
}
transform {
text {
color: rgba(146,149,149,0.55);
font: "Cantarell 11";
- glyphs: 682 8, 677 9, 805 4, 677 9;
+ glyphs: "50.0";
offset: 26 15;
}
transform {
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 81 4, 360 8, 417 7, 287 8, 430 6;
+ glyphs: "Inset";
offset: 0 15;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 126 11, 438 8, 430 6, 417 7, 287 8, 430 6;
+ glyphs: "Outset";
offset: 0 15;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 69 11, 409 6, 370 8, 370 8, 466 7, 287 8;
+ glyphs: "Groove";
offset: 0 15;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 165 10, 324 4, 280 8, 312 8, 287 8;
+ glyphs: "Ridge";
offset: 0 15;
}
}
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 1 10, 360 8, 280 8, 409 6, 287 8, 244 8;
+ glyphs: "Andrea";
offset: 86 42;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 30 10, 324 4, 358 13, 324 4;
+ glyphs: "Cimi";
offset: 157 42;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 126 11, 430 5, 430 5, 370 8;
+ glyphs: "Otto";
offset: 86 65;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 273 7, 319 8, 244 8, 370 8, 430 5, 324 4, 273 7;
+ glyphs: "chaotic";
offset: 157 65;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 126 11, 409 6, 466 7, 324 4, 349 4, 349 4, 287 8;
+ glyphs: "Orville";
offset: 86 88;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 165 9, 287 8, 280 8, 287 8, 360 8;
+ glyphs: "Reden";
offset: 157 88;
}
text {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 29 10, 287 8, 360 8, 341 4, 244 8, 358 13, 324 4, 360 8;
+ glyphs: "Benjamin";
offset: 86 111;
}
color {
text {
color: rgb(50,50,50);
font: "Cantarell 11";
- glyphs: 30 10, 370 8, 358 13, 406 8;
+ glyphs: "Comp";
offset: 157 111;
}
text {
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 30 9, 370 8, 370 8, 349 4;
+ glyphs: "Cool";
offset: 0 17;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 81 4, 273 7, 370 8, 360 8;
+ glyphs: "Icon";
offset: 0 17;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 115 11, 244 8, 358 13, 287 8;
+ glyphs: "Name";
offset: 0 17;
}
}
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 115 11, 324 4, 273 7, 345 8;
+ glyphs: "Nick";
offset: 0 17;
}
}
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 680 8;
+ glyphs: "page 3";
offset: 0 20;
}
transform: translate(149, 0) translate(16, 3);
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 679 8;
+ glyphs: "page 2";
offset: 0 20;
}
transform: translate(74, 0) translate(16, 3);
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 678 7;
+ glyphs: "page 1";
offset: 0 20;
}
}
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 680 8;
+ glyphs: "page 3";
offset: 0 20;
}
transform: translate(0, 88) translate(12, 7);
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 679 8;
+ glyphs: "page 2";
offset: 0 20;
}
transform: translate(0, 44) translate(12, 7);
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 678 7;
+ glyphs: "page 1";
offset: 0 20;
}
}
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 680 8;
+ glyphs: "page 3";
offset: 0 20;
}
transform: translate(149, 0) translate(16, 4);
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 679 8;
+ glyphs: "page 2";
offset: 0 20;
}
transform: translate(74, 0) translate(16, 4);
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 678 7;
+ glyphs: "page 1";
offset: 0 20;
}
}
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 680 8;
+ glyphs: "page 3";
offset: 0 20;
}
transform: translate(0, 88) translate(12, 7);
child: text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 679 8;
+ glyphs: "page 2";
offset: 0 20;
}
transform: translate(0, 44) translate(12, 7);
text {
color: rgb(146,149,149);
font: "Cantarell Bold 11";
- glyphs: 406 8, 244 8, 312 8, 287 8, 862 3, 678 7;
+ glyphs: "page 1";
offset: 0 20;
}
}